PHP >= 5.1 x horário de verão brasileiro

O horário de verão no Brasil sempre deu dor de cabeça aos administradores de sistemas Linux. Depois da divulgação da ferramenta zic, juntamente com a data de início e a data final do horário de verão nacional a coisa ficou mais fácil de ser controlada. Agora, surgiu um problema com o PHP >= 5.1.

[ Hits: 12.638 ]

Por: Marlichsi, o Mxyzptlk em 01/11/2007


Configurando e solucionando o problema.



A configuração do servidor que resolvi corrigir o problema possui Fedora Core 5 com PHP 5.1 e Apache 2.2 instalados.

Vasculhando maiores informações, descobri que o pacote com a atualização do timezone atual pertencia ao PECL, e este pode ser instalado através do comando abaixo.

# pecl install timezonedb

Com isso, o PECL faz o download, compilação e instalação do pacote necessário, preparando a extensão para ser utilizada pelo PHP. Simples assim.

Porém ele faz a instalação da extensão em um diretório diferente da configuração que o PHP está esperando, que é:

/usr/lib/php/modules (esse diretório é a minha configuração default do PHP)

Ele coloca essa extensão em:

/usr/local/lib/php/extensions/no-debug-non-zts-20050922

O que você tem que fazer é copiar o arquivo timezonedb.so do diretório onde o PECL instalou para o diretório que o PHP está aguardando que estejam todas suas extensões.

Feito isso, você precisa dizer ao PHP para utilizar essa extensão.

Edite o arquivo de configuração do PHP (/etc/php.ini) e adicione a linha extension=timezonedb.so na seção Dynamic Extensions.

Vai ficar algo mais ou menos assim:

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example:
;
; extension=msql.so
;
; Note that it should be the name of the module only; no directory information
; needs to go here. Specify the location of the extension with the
; extension_dir directive above.

;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;
extension=mysql.so
extension=timezonedb.so

Com essa configuração feita no seu PHP, salve o arquivo e reinicie o Apache:

# /sbin/service httpd restart

E pronto! Seu sistema operacional e seu PHP estão trabalhando com o horário de verão corretos.

Página anterior    

Páginas do artigo
   1. Detectando o problema e descobrindo o motivo
   2. Configurando e solucionando o problema.
Outros artigos deste autor

Conectividade Social vs. proxy Squid transparente

Leitura recomendada

Criando um sistema de banners rotativos em PHP

Trabalhando com datas em PHP

Guia completo do Ocomon módulo admin no Linux (exclusivo VOL)

Cadastro e login em PHP

Debugando aplicações PHP com Xdebug e Eclipse PDT

  
Comentários
[1] Comentário enviado por gabrielvivian em 05/11/2007 - 11:32h

Buenas!
Tenho slackware 10.2
nao deu certo o comando
pcl install timezonedb
tem alguma ideia? de como posso fazer

[2] Comentário enviado por silvioadl em 08/11/2007 - 12:21h

Muito bom cara!

[3] Comentário enviado por marlichsi em 09/11/2007 - 23:44h

Gabriel,

Não sei se isso funciona no Slackware, mas, se funcionar, dá uma verificada na sintaxe dos comandos que eu postei no artigo com a sintaxe dos comandos que você tá executando.

Acho que tem erro de digitação por aí.

[4] Comentário enviado por mrlnw em 18/11/2008 - 17:15h

Cara..
no slack baixa o timezonedb-algumacoisa.tgz descompacta ele e compila manualmente q vai..

phpize
./configure
make
make install

ao menos o meu compilou.. mais não resolveu em nada não.. o horario do php continua errado.. acho que vou ter eh q mudar o sao paulo lá e colocar uma cidade mais pro nordeste mesmo


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts